# pragma once
#include "Types.h"
#include "tools.h"
//数据读取类
template<typename ... Args>
static std::string str_format(const std::string &format, Args ... args)
{
	auto size_buf = std::snprintf(nullptr, 0, format.c_str(), args ...) + 1; 
	std::unique_ptr<char[]> buf(new(std::nothrow) char[size_buf]);

	if (!buf)
		return std::string("");

	std::snprintf(buf.get(), size_buf, format.c_str(), args ...);
	return std::string(buf.get(), buf.get() + size_buf - 1); 
}

//统一使用深度图和彩色图作为输入
struct DataTuple
{
    cv::Mat c_img;
    cv::Mat d_img;

};

typedef std::vector<DataTuple> DataSet;

class DataLoder
{
    private:
        Paras pars_;
        DataSet AllData_;
        int img_num_;//图片总数
        std::vector<std::vector<size_t>> index_;//去除的点的索引(用于深度图的滤波)

    public:
        DataLoder();
        DataLoder(Paras pars);

        //获取第t帧的数据
        DataTuple Getframes(int t); 
        PointCloud PcRecover(int t);//点云恢复
        
        // void NormalEstimate(int t);//法向估计
        ~DataLoder();

};


